package com.mdd.common.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 分账账号信息
 * @TableName alipay_royalty_account_info
 */
@Data
@TableName(value ="alipay_royalty_account_info")
public class AlipayRoyaltyAccountInfo implements Serializable {
    /**
     * 编号
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 分账接收方账号。 当分账方类型是userId时，本参数为用户的支付宝账号对应的支付宝唯一用户号，以2088开头的纯16位数字；
     * 当分账方类型是loginName时，本参数为用户的支付宝登录号；当分账方类型是openId时，本参数传递支付宝openId信息
     */
    private String account;
    /**
     * 商户id
     */
    private String merchantId;

    /**
     * 分账接收方openId，本参数为分账接收方在该应用（AppId）下的唯一用户标识，仅用于分账关系查询接口出参
     */
    private String accountOpenId;

    /**
     * 作为查询返回结果：分账收款方绑定时的支付宝登录号。
     * 分账关系绑定（alipay.trade.royalty.relation.bind）时，通过type为loginName绑定传入的支付宝登录号，若使用userId绑定则不返回
     */
    private String bindLoginName;

    /**
     * 作为查询返回结果：当前userId对应的支付宝登录号。
     * 当login_name与bind_login_name不相等时，表明该支付宝账户发生了登录号变更
     */
    private String loginName;

    /**
     * 分账关系描述
     */
    private String memo;

    /**
     * 分账接收方真实姓名。 绑定分账关系时： 当分账方类型是userId时，本参数可以不传，若上传则进行校验不上传不会校验。
     * 当分账方类型是loginName时，本参数必传。 解绑分账关系时：作为请求参数可不填，分账关系查询时不作为返回结果返回
     */
    private String name;

    /**
     * 分账接收方方类型。 userId：表示是支付宝账号对应的支付宝唯一用户号；loginName：表示是支付宝登录号；openId：表示支付宝openId
     */
    private String type;

    /**
     * 组织类型：1、平台 2、op 3、cp
     */
    private Integer organizationType;

    /**
     * 是否删除: 0=否, 1=是
     */
    @TableLogic
    private Integer isDelete;
    /**
     * 创建人
     */
    private Long createBy;

    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT,value = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE,value = "update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 更新人
     */
    private Long updateBy;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
